package Array;

/**
 * @BelongsProject: SeniorArchitect-LeetCode
 * @BelongsPackage: Array
 * @Author: zhuangxiaoyan
 * @CreateTime: 2023-10-18  22:35
 * @Description: TODO
 * @Version: 1.0
 */
public class 跳跃游戏55 {

    public boolean canJump(int[] nums) {
        // 表达最大位置
        int reach=0;
        int n=nums.length;
        for (int i=0;i<n;i++){
            // 当前的位置到达不了
            if (i>reach){
                return false;
            }
            // 每一次都是重新计算能够到达的最远的位置
            reach=Math.max(reach,i+nums[i]);
        }
        return true;
    }

    // 反向来实现  判断位置是否能够等于最开始的的位置
    public boolean canJump2(int[] nums) {
        int len=nums.length;
        int last=len-1;
        for (int i=len-2;i>=0;i--){
            if (i+nums[i]>=last){
                last=i;
            }
        }
        return last==0;
    }
}
